英創EM928x/EM335x/ESM335x系列主板新CAN驅動使用說明
12月份,英創對現主要銷售的產品EM928X、EM335X、ESM335X系列工控主板的CAN驅動做了一次較大升級。主要目的是修復原有BUG,同時優化部分邏輯,使得使用起來更加方便。
優化內容
1、修復了原驅動打開過濾器后一個可能導致接收丟包的BUG
EM335X及ESM335X系列主板在打開過濾器后,CAN接收單元過少,在高速收發時可能因為來不及收發導致丟包。新驅動修改了該部分邏輯,同時定義過濾器最大數為4個。新的過濾器設置說明請參考附錄《英創新CAN驅動接口調用方法及說明》過濾器設置一節。
2、增加一套新的接口函數
1)新的接口更加簡潔清晰,使用起來更加方便。詳細請參考附錄《英創新CAN驅動接口調用方法及說明》。
2)使用統一標準,英創公司計劃在之后推出的產品也采用該標準,方便客戶在升級更換平臺時移植起來更加方便。
3)完全兼容老驅動。新驅動保留了老驅動所有接口。升級之后,之前開發的CAN應用程序可以繼續照常使用。
3、增加對CAN總線錯誤自動復位功能,修改了CAN總線錯誤處理邏輯結構
原驅動在CAN總線出錯后會上報事件通知上層應用程序,同時掛起等待上層應用程序處理完錯誤事件后手動復位CAN總線。在等待期間,無法進行CAN的收發工作。
圖 原驅動總線錯誤處理流程
新驅動考慮到,實際應用中用戶更希望在CAN錯誤排除后,能夠盡快恢復通信。大部分時候并不需要停下來等待CAN錯誤處理完畢。所以新驅動在CAN總線出錯后會自動檢查恢復CAN總線。
圖 新驅動總線錯誤處理流程
4、修改CAN總線錯誤處理模式
原驅動需要單獨獲取CAN錯誤事件,然后再通過接口查詢錯誤類型,再決定處理方式。新驅動做優化修改了處理模式,使得使用起來更靈活方便。
圖 原驅動CAN總線錯誤處理模式
新驅動CAN總線錯誤信息改為通過幀形式上報,用戶可以通過注冊表[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAN1]中BusErrorReport項設置是否需要接收錯誤幀,默認不接收。
圖 新驅動CAN總線錯誤處理模式
錯誤幀詳細定義見附錄《CAN錯誤幀定義》。
5、修改發送邏輯
原驅動發送指令只是將需要發送的數據幀放入發送BUFFER區,只要BUFFER區未滿均返回成功,但是不代表實際發送成功。
原CAN驅動會自動檢查發送BUFFER區里未發送的CAN包并嘗試發送,對未發送成功的CAN包會自動重發,直到發送成功。
在CAN數據線斷開時,CAN發送指令會返回TRUE,但實際數據仍存在發送BUFFER中并未發送出去。當CAN數據線重新連接后,BUFFER中的數據才得以發送。
圖 原驅動CAN發送流程
新驅動發送函數為阻塞函數,超時時間默認為1000ms,可以設置注冊表[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAN1]中TxTimeout項修改該時間長短。返回值為實際發送是否成功的邏輯值。
當CAN總線錯誤,發送失敗后,CAN驅動不會自動重發CAN包,所以需要應用層自行判斷是否重發。
圖 新驅動CAN發送流程
6、增加CAN接收BUFFER到8K,可以緩存更多CAN包
附錄
《英創新CAN驅動接口調用方法及說明》
《CAN錯誤幀定義》
成都英創信息技術有限公司
http://www.emtronix.com

提交
Windows下STM32單片機eclipse編譯環境搭建
Android Studio應用開發簡介
WinCE工控主板WiFi解決方案
敬請關注成都英創微信公眾號
WinCE工控主板通過PPI協議連接西門子PLC